Skip to content

[slimtensor] integration into backend#16565

Merged
meta-codesync[bot] merged 25 commits intogh/gasoonjia/101/basefrom
gh/gasoonjia/101/head
Jan 30, 2026
Merged

[slimtensor] integration into backend#16565
meta-codesync[bot] merged 25 commits intogh/gasoonjia/101/basefrom
gh/gasoonjia/101/head

Conversation

@Gasoonjia
Copy link
Contributor

@Gasoonjia Gasoonjia commented Jan 13, 2026

This diff makes cuda backend actually use slimtensor.
It:
updates cuda_backends to create slimtensor from given etensor
removed duplicate etensor-driven shim layers under cuda_backend
update cmake logic in both cuda backend and aoti backend
Perf maintains the same. Shows as before.

image

Worth to notice that we are still keeping two sets of common shims, one is etensor-based and for metal backend, the other is slimtensor-based which used by cuda backend, to not impact metal backend work.
When Metal backend finishs the migration, we should delete the duplicate common shims and only keep slimtensor-based one.

Stack from ghstack (oldest at bottom):

Differential Revision: D90606409

@pytorch-bot
Copy link

pytorch-bot bot commented Jan 13, 2026

🔗 Helpful Links

🧪 See artifacts and rendered test results at hud.pytorch.org/pr/pytorch/executorch/16565

Note: Links to docs will display an error until the docs builds have been completed.

❌ 2 New Failures, 3 Unrelated Failures

As of commit f8a812e with merge base 1df4dac (image):

NEW FAILURES - The following jobs have failed:

BROKEN TRUNK - The following jobs failed but were present on the merge base:

👉 Rebase onto the `viable/strict` branch to avoid these failures

This comment was automatically generated by Dr. CI and updates every 15 minutes.

@meta-cla meta-cla bot added the CLA Signed This label is managed by the Facebook bot. Authors need to sign the CLA before a PR can be reviewed. label Jan 13, 2026
This was referenced Jan 13, 2026
Gasoonjia added a commit that referenced this pull request Jan 13, 2026
Differential Revision: [D90606409](https://our.internmc.facebook.com/intern/diff/D90606409/)

ghstack-source-id: 333239044
Pull Request resolved: #16565
Gasoonjia added a commit that referenced this pull request Jan 27, 2026
Pull Request resolved: #16565



perf maintains as before.
{F1984962152}

ghstack-source-id: 336200461
@exported-using-ghexport

Differential Revision: [D90606409](https://our.internmc.facebook.com/intern/diff/D90606409/)
Gasoonjia added a commit that referenced this pull request Jan 27, 2026
Pull Request resolved: #16565



perf maintains as before.
{F1984962152}

ghstack-source-id: 336233120
@exported-using-ghexport

Differential Revision: [D90606409](https://our.internmc.facebook.com/intern/diff/D90606409/)
Gasoonjia added a commit that referenced this pull request Jan 27, 2026
Stack from [ghstack](https://github.com/ezyang/ghstack) (oldest at
bottom):
* #16565
* #16551
* #16469
* #16457
* #16455
* #16454
* #16453
* #16452
* #16451
* #16450
* #16449
* #16448
* #16447
* #16446
* __->__ #16724

Copy CUDAGuard and CUDAStreamGuard from cuda/runtime/ to aoti/slim/cuda/
to support slimtensor requirement while get rid of potential circular
dependency:
- cuda_backend/main_functionalities -> aoti/slimtensor ->
cuda_backend/cuda_guard

This change:
- copy guard.h, guard.cpp and test files from backend/cuda_backend to
backend/aoti/slim/cuda/

Differential Revision:
[D91056808](https://our.internmc.facebook.com/intern/diff/D91056808/)
Gasoonjia added a commit that referenced this pull request Jan 27, 2026
…v2 (#16446)

Stack from [ghstack](https://github.com/ezyang/ghstack) (oldest at
bottom):
* #16565
* #16551
* #16469
* #16457
* #16455
* #16454
* #16453
* #16452
* #16451
* #16450
* #16449
* #16448
* #16447
* __->__ #16446
* #16724

Add SlimTensor-based implementations of AOTI shim functions for tensor
creation:

1. `aoti_torch_create_tensor_from_blob_v2()` - Creates a non-owning
SlimTensor that wraps existing memory using the `from_blob()` factory

Both functions support CPU and CUDA devices and handle all 7 SlimTensor
dtypes.

Also add `memory_slim.h` and `memory_slim.cpp` with SlimTensor-based
shim implementations for working on new API while not impact the current
pipeline. Will use memory_slim.{h/cpp} to replace current memory.{h/cpp}
when everything has been set up.

Differential Revision:
[D90126247](https://our.internmc.facebook.com/intern/diff/D90126247/)
Gasoonjia added a commit that referenced this pull request Jan 27, 2026
Stack from [ghstack](https://github.com/ezyang/ghstack) (oldest at
bottom):
* #16565
* #16551
* #16469
* #16457
* #16455
* #16454
* #16453
* #16452
* #16451
* #16450
* #16449
* #16448
* __->__ #16447
* #16446
* #16724

Add SlimTensor-based implementations of AOTI shim functions for tensor
creation:

`aoti_torch_create_tensor_from_blob_v2()` - Creates a non-owning
SlimTensor that wraps existing memory using the `from_blob()` factory

Both functions support CPU and CUDA devices and handle all 7 SlimTensor
dtypes.

Changes:
- Add `memory_slim.h` and `memory_slim.cpp` with SlimTensor-based shim
implementations
- Add `runtime_shims_slim` library target to TARGETS with
`CUDA_AVAILABLE=1` preprocessor flag
- Add `cuda_shim_slim_cpp_unittest()` function for SlimTensor test
targets

Differential Revision:
[D90126244](https://our.internmc.facebook.com/intern/diff/D90126244/)
Copy link
Contributor

@larryliu0820 larryliu0820 left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Review automatically exported from Phabricator review in Meta.

This diff makes cuda backend actually use slimtensor.
It:
updates cuda_backends to create slimtensor from given etensor
removed duplicate etensor-driven shim layers under cuda_backend
update cmake logic in both cuda backend and aoti backend
Perf maintains the same. Shows as before.

<img width="3092" height="1902" alt="image" src="https://github.com/user-attachments/assets/6061576b-0d4b-4b20-ac8d-5f45493737d8" />


Worth to notice that we are still keeping two sets of common shims, one is etensor-based and for metal backend, the other is slimtensor-based which used by cuda backend, to not impact metal backend work.
When Metal backend finishs the migration, we should delete the duplicate common shims and only keep slimtensor-based one.



Differential Revision: [D90606409](https://our.internmc.facebook.com/intern/diff/D90606409/)

[ghstack-poisoned]
Gasoonjia added a commit that referenced this pull request Jan 29, 2026
Pull Request resolved: #16565

This diff makes cuda backend actually use slimtensor.

It:
1. updates cuda_backends to create slimtensor from given etensor
2. removed duplicate etensor-driven shim layers under cuda_backend
3. update cmake logic in both cuda backend and aoti backend

Perf maintains the same. Shows as before.
 {F1984982156}

Worth to notice that currently we keeps two sets of common shims, one is etensor-based and for metal backend, the other is slimtensor-based which used by cuda backend, to not impact metal backend work.

When Metal backend finishs the migration, we should delete the duplicate common shims and only keep slimtensor-based one.

ghstack-source-id: 336538676
@exported-using-ghexport

Differential Revision: [D90606409](https://our.internmc.facebook.com/intern/diff/D90606409/)
This diff makes cuda backend actually use slimtensor.
It:
updates cuda_backends to create slimtensor from given etensor
removed duplicate etensor-driven shim layers under cuda_backend
update cmake logic in both cuda backend and aoti backend
Perf maintains the same. Shows as before.

<img width="3092" height="1902" alt="image" src="https://github.com/user-attachments/assets/6061576b-0d4b-4b20-ac8d-5f45493737d8" />


Worth to notice that we are still keeping two sets of common shims, one is etensor-based and for metal backend, the other is slimtensor-based which used by cuda backend, to not impact metal backend work.
When Metal backend finishs the migration, we should delete the duplicate common shims and only keep slimtensor-based one.



Differential Revision: [D90606409](https://our.internmc.facebook.com/intern/diff/D90606409/)

[ghstack-poisoned]
Gasoonjia added a commit that referenced this pull request Jan 29, 2026
Pull Request resolved: #16565

This diff makes cuda backend actually use slimtensor.

It:
1. updates cuda_backends to create slimtensor from given etensor
2. removed duplicate etensor-driven shim layers under cuda_backend
3. update cmake logic in both cuda backend and aoti backend

Perf maintains the same. Shows as before.
 {F1984982156}

Worth to notice that currently we keeps two sets of common shims, one is etensor-based and for metal backend, the other is slimtensor-based which used by cuda backend, to not impact metal backend work.

When Metal backend finishs the migration, we should delete the duplicate common shims and only keep slimtensor-based one.

ghstack-source-id: 336658381
@exported-using-ghexport

Differential Revision: [D90606409](https://our.internmc.facebook.com/intern/diff/D90606409/)
This diff makes cuda backend actually use slimtensor.
It:
updates cuda_backends to create slimtensor from given etensor
removed duplicate etensor-driven shim layers under cuda_backend
update cmake logic in both cuda backend and aoti backend
Perf maintains the same. Shows as before.

<img width="3092" height="1902" alt="image" src="https://github.com/user-attachments/assets/6061576b-0d4b-4b20-ac8d-5f45493737d8" />


Worth to notice that we are still keeping two sets of common shims, one is etensor-based and for metal backend, the other is slimtensor-based which used by cuda backend, to not impact metal backend work.
When Metal backend finishs the migration, we should delete the duplicate common shims and only keep slimtensor-based one.



Differential Revision: [D90606409](https://our.internmc.facebook.com/intern/diff/D90606409/)

[ghstack-poisoned]
Gasoonjia added a commit that referenced this pull request Jan 29, 2026
Pull Request resolved: #16565

This diff makes cuda backend actually use slimtensor.

It:
1. updates cuda_backends to create slimtensor from given etensor
2. removed duplicate etensor-driven shim layers under cuda_backend
3. update cmake logic in both cuda backend and aoti backend

Perf maintains the same. Shows as before.
 {F1984982156}

Worth to notice that currently we keeps two sets of common shims, one is etensor-based and for metal backend, the other is slimtensor-based which used by cuda backend, to not impact metal backend work.

When Metal backend finishs the migration, we should delete the duplicate common shims and only keep slimtensor-based one.

ghstack-source-id: 336675369
@exported-using-ghexport

Differential Revision: [D90606409](https://our.internmc.facebook.com/intern/diff/D90606409/)
@Gasoonjia Gasoonjia temporarily deployed to upload-benchmark-results January 29, 2026 09:48 — with GitHub Actions Inactive
This diff makes cuda backend actually use slimtensor.
It:
updates cuda_backends to create slimtensor from given etensor
removed duplicate etensor-driven shim layers under cuda_backend
update cmake logic in both cuda backend and aoti backend
Perf maintains the same. Shows as before.

<img width="3092" height="1902" alt="image" src="https://github.com/user-attachments/assets/6061576b-0d4b-4b20-ac8d-5f45493737d8" />


Worth to notice that we are still keeping two sets of common shims, one is etensor-based and for metal backend, the other is slimtensor-based which used by cuda backend, to not impact metal backend work.
When Metal backend finishs the migration, we should delete the duplicate common shims and only keep slimtensor-based one.



Differential Revision: [D90606409](https://our.internmc.facebook.com/intern/diff/D90606409/)

[ghstack-poisoned]
Gasoonjia added a commit that referenced this pull request Jan 29, 2026
Pull Request resolved: #16565

This diff makes cuda backend actually use slimtensor.

It:
1. updates cuda_backends to create slimtensor from given etensor
2. removed duplicate etensor-driven shim layers under cuda_backend
3. update cmake logic in both cuda backend and aoti backend

Perf maintains the same. Shows as before.
 {F1984982156}

Worth to notice that currently we keeps two sets of common shims, one is etensor-based and for metal backend, the other is slimtensor-based which used by cuda backend, to not impact metal backend work.

When Metal backend finishs the migration, we should delete the duplicate common shims and only keep slimtensor-based one.

ghstack-source-id: 336849886
@exported-using-ghexport

Differential Revision: [D90606409](https://our.internmc.facebook.com/intern/diff/D90606409/)
This diff makes cuda backend actually use slimtensor.
It:
updates cuda_backends to create slimtensor from given etensor
removed duplicate etensor-driven shim layers under cuda_backend
update cmake logic in both cuda backend and aoti backend
Perf maintains the same. Shows as before.

<img width="3092" height="1902" alt="image" src="https://github.com/user-attachments/assets/6061576b-0d4b-4b20-ac8d-5f45493737d8" />


Worth to notice that we are still keeping two sets of common shims, one is etensor-based and for metal backend, the other is slimtensor-based which used by cuda backend, to not impact metal backend work.
When Metal backend finishs the migration, we should delete the duplicate common shims and only keep slimtensor-based one.



Differential Revision: [D90606409](https://our.internmc.facebook.com/intern/diff/D90606409/)

[ghstack-poisoned]
Gasoonjia added a commit that referenced this pull request Jan 29, 2026
Pull Request resolved: #16565

This diff makes cuda backend actually use slimtensor.

It:
1. updates cuda_backends to create slimtensor from given etensor
2. removed duplicate etensor-driven shim layers under cuda_backend
3. update cmake logic in both cuda backend and aoti backend

Perf maintains the same. Shows as before.
 {F1984982156}

Worth to notice that currently we keeps two sets of common shims, one is etensor-based and for metal backend, the other is slimtensor-based which used by cuda backend, to not impact metal backend work.

When Metal backend finishs the migration, we should delete the duplicate common shims and only keep slimtensor-based one.

ghstack-source-id: 336891991
@exported-using-ghexport

Differential Revision: [D90606409](https://our.internmc.facebook.com/intern/diff/D90606409/)
@Gasoonjia Gasoonjia temporarily deployed to upload-benchmark-results January 30, 2026 06:02 — with GitHub Actions Inactive
This diff makes cuda backend actually use slimtensor.
It:
updates cuda_backends to create slimtensor from given etensor
removed duplicate etensor-driven shim layers under cuda_backend
update cmake logic in both cuda backend and aoti backend
Perf maintains the same. Shows as before.

<img width="3092" height="1902" alt="image" src="https://github.com/user-attachments/assets/6061576b-0d4b-4b20-ac8d-5f45493737d8" />


Worth to notice that we are still keeping two sets of common shims, one is etensor-based and for metal backend, the other is slimtensor-based which used by cuda backend, to not impact metal backend work.
When Metal backend finishs the migration, we should delete the duplicate common shims and only keep slimtensor-based one.



Differential Revision: [D90606409](https://our.internmc.facebook.com/intern/diff/D90606409/)

[ghstack-poisoned]
Gasoonjia added a commit that referenced this pull request Jan 30, 2026
Pull Request resolved: #16565

This diff makes cuda backend actually use slimtensor.

It:
1. updates cuda_backends to create slimtensor from given etensor
2. removed duplicate etensor-driven shim layers under cuda_backend
3. update cmake logic in both cuda backend and aoti backend

Perf maintains the same. Shows as before.
 {F1984982156}

Worth to notice that currently we keeps two sets of common shims, one is etensor-based and for metal backend, the other is slimtensor-based which used by cuda backend, to not impact metal backend work.

When Metal backend finishs the migration, we should delete the duplicate common shims and only keep slimtensor-based one.

ghstack-source-id: 336976428
@exported-using-ghexport

Differential Revision: [D90606409](https://our.internmc.facebook.com/intern/diff/D90606409/)
@Gasoonjia Gasoonjia temporarily deployed to upload-benchmark-results January 30, 2026 07:56 — with GitHub Actions Inactive
@meta-codesync meta-codesync bot merged commit 7ae87a5 into gh/gasoonjia/101/base Jan 30, 2026
202 of 210 checks passed
@meta-codesync meta-codesync bot deleted the gh/gasoonjia/101/head branch January 30, 2026 18:23
Gasoonjia added a commit that referenced this pull request Jan 30, 2026
This PR was created by the merge bot to help merge the original PR into
the main branch.
ghstack PR number: #16565 by
@Gasoonjia
^ Please use this as the source of truth for the PR details, comments,
and reviews
ghstack PR base:
https://github.com/pytorch/executorch/tree/gh/gasoonjia/101/base
ghstack PR head:
https://github.com/pytorch/executorch/tree/gh/gasoonjia/101/head
Merge bot PR base: https://github.com/pytorch/executorch/tree/main
Merge bot PR head:
https://github.com/pytorch/executorch/tree/gh/gasoonjia/101/orig
Differential Revision:
[D90606409](https://our.internmc.facebook.com/intern/diff/D90606409/)
@diff-train-skip-merge

Co-authored-by: gasoonjia <gasoonjia@icloud.com>
larryliu0820 pushed a commit that referenced this pull request Feb 2, 2026
This PR was created by the merge bot to help merge the original PR into
the main branch.
ghstack PR number: #16565 by
@Gasoonjia
^ Please use this as the source of truth for the PR details, comments,
and reviews
ghstack PR base:
https://github.com/pytorch/executorch/tree/gh/gasoonjia/101/base
ghstack PR head:
https://github.com/pytorch/executorch/tree/gh/gasoonjia/101/head
Merge bot PR base: https://github.com/pytorch/executorch/tree/main
Merge bot PR head:
https://github.com/pytorch/executorch/tree/gh/gasoonjia/101/orig
Differential Revision:
[D90606409](https://our.internmc.facebook.com/intern/diff/D90606409/)
@diff-train-skip-merge

Co-authored-by: gasoonjia <gasoonjia@icloud.com>
Co-authored-by: Cursor <cursoragent@cursor.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

CLA Signed This label is managed by the Facebook bot. Authors need to sign the CLA before a PR can be reviewed. fb-exported meta-exported

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants